#include "ABMTintura.h"

ABMTintura::ABMTintura(std::string nArchivo, unsigned int tamanioBucket) {
	this->nArchivo = nArchivo;
	this->tamanioBucket = tamanioBucket;
	arbolTintura = new Indice(nArchivo, tamanioBucket);

}

ABMTintura::~ABMTintura() {

}

bool ABMTintura::alta(unsigned int id, string descripcion, bool colorEstampa) {
	string valor = descripcion + ";" + Util::intToString(colorEstampa);
	ElementoHoja elemento(id, valor);
	return ((arbolTintura->alta(elemento)) != -1);
}

bool ABMTintura::baja(unsigned int id) {
	return ((arbolTintura->baja(id)) != -1);
}

bool ABMTintura::modificacion(unsigned int id, string descripcion,
		bool colorEstampa) {
	string valor = descripcion + ";" + Util::intToString(colorEstampa);
	ElementoHoja elemento(id, valor);
	return ((arbolTintura->modificar(elemento)) != -1);
}

/*si lo encuentra devuelve el valor de Key con los atributos separados por ; */

string ABMTintura::buscar(unsigned int id) {
	ResultadoBuscar res = arbolTintura->buscar(id);
	ElementoHoja elemH= arbolTintura->buscarElemento(id);
	if (elemH.clave !=- 1) {
		return Util::intToString(id) + ";" + elemH.valor;
	} else {
		return "";
	}
}

vector<string> ABMTintura::listar() {
	vector<ElementoHoja> elementos = arbolTintura->recorreOrdenado();
	vector<string> resultado;
	for (int i = 0; i < elementos.size(); i++) {
		string valorVector = Util::uIntToString(elementos.at(i).clave) + ";"
				+ (elementos.at(i).valor);
		resultado.push_back(valorVector);
	}
	return resultado;
}

